home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 4594 < prev    next >
Encoding:
Text File  |  1996-08-05  |  28.4 KB  |  703 lines

  1. Newsgroups: rec.games.programmer,comp.lang.c,alt.lang.asm,comp.lang.asm.x86
  2. Path: news2.new-york.net!not-for-mail
  3. From: Emre Yucel <amoeba@buttercup.cybernex.net>
  4. Subject: Re: Int 10h
  5. Content-Type: text/plain; charset=us-ascii
  6. X-Nntp-Posting-User: (Unauthenticated)
  7. Content-Transfer-Encoding: 7bit
  8. Message-ID: <DMBw88.G5G@news2.new-york.net>
  9. References: <4f2v3d$qs9@wolfe.wimsey.com> <4f52od$bni@hacgate2.hac.com>
  10. X-Mailer: Mozilla 1.22 (Windows; I; 16bit)
  11. Mime-Version: 1.0
  12. X-Trace: 823566814/17844
  13. X-Nntp-Posting-Host: cnj121.cybernex.net
  14. Date: Tue, 6 Feb 1996 00:33:43 GMT
  15.  
  16. Justin Liew (jliew@wimsey.com) wrote:
  17. : I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h 
  18. look
  19. : really crappy.  I perused Ralf brown's interrupt page for ways to get
  20. : better fonts, and I came up with int10h.  How would I go about
  21. : implementing this interrupt to bring in better fonts.  Where could I
  22. : download fonts, what form are they in, and how do I use them with the
  23. : interrupt to allow me to use them?  If you know, could you please help 
  24. me?
  25. :  Thanx
  26. : JUSTIN
  27.  
  28. You're asking the wrong people here.  Ask this over in 
  29. comp.msdos.programmer,
  30. or one of the graphics groups.
  31.  
  32. BTW, mode 13h is 320x200 pixels; I don't think *any* font is going to look
  33. very good at that low resolution.
  34.  
  35. Please! Many fonts look nice in 320x200. How do you think all the games
  36. out there have such nice fonts. Ok, ok, 1024x768 is better but we are not
  37. using DX2 septiums here! Interrupt 10h is just a general interrupt that 
  38. relates to VGA BIOS. All graphic realted things are done through int 10h.
  39. You can also change video fonts. I have seen this happen many times
  40. in text mode but never in graphics mode. But you may try. Got nothing to
  41. lose. Here is a list of all uses of interrupt 10h....
  42.  
  43. --VGABIOS.TXT
  44.  
  45. ----------1000-------------------------------
  46. INT 10 - VIDEO - SET VIDEO MODE
  47.         AH = 00h
  48.         AL = mode (see below)
  49. Return: AL = video mode flag (Phoenix BIOS)
  50.              20h mode > 7
  51.              30h modes <= 7 except mode 6
  52.              3Fh mode 6
  53.         AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  54. Notes:       IBM standard modes do not clear the screen if the high bit of 
  55. AL is set
  56.       (EGA or higher only)
  57. SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
  58.  
  59. Values for video mode:
  60.      text/ text   pixel pixel    colors  display  scrn system
  61.      grph  resol  box   resoltn          pages   addr
  62.  00h = T   40x25  8x14           16gray     8    B800 EGA
  63.      = T   40x25  8x16             16       8    B800 MCGA
  64.      = T   40x25  9x16             16       8    B800 VGA
  65.  01h = T   40x25  8x14             16       8    B800 EGA
  66.      = T   40x25  8x16             16       8    B800 MCGA
  67.      = T   40x25  9x16             16       8    B800 VGA
  68.  02h = T   80x25  8x14           16gray     4    B800 EGA
  69.      = T   80x25  8x16             16       4    B800 MCGA
  70.      = T   80x25  9x16             16       4    B800 VGA
  71.  03h = T   80x25  8x14             16       4    B800 EGA
  72.      = T   80x25  8x16             16       4    B800 MCGA
  73.      = T   80x25  9x16             16       4    B800 VGA
  74.  04h = G   40x25  8x8     320x200           4    B800 
  75. CGA,PCjr,EGA,MCGA,VGA
  76.  05h = G   40x25  8x8     320x200 4gray          B800 CGA,PCjr,EGA
  77.      = G   40x25  8x8     320x200   4            B800 MCGA,VGA
  78.  06h = G   80x25  8x8     640x200   2            B800 
  79. CGA,PCjr,EGA,MCGA,VGA
  80.  07h = T   80x25  9x14            mono     var   B000 MDA,Hercules,EGA
  81.      = T   80x25  9x16            mono           B000 VGA
  82.  0Bh =                 reserved (used internally by EGA BIOS)
  83.  0Ch =                 reserved (used internally by EGA BIOS)
  84.  0Dh = G   40x25  8x8     320x200  16       8    A000 EGA,VGA
  85.  0Eh = G   80x25  8x8     640x200  16       4    A000 EGA,VGA
  86.  0Fh = G   80x25  8x14    640x350 mono      2    A000 EGA,VGA
  87.  10h = G   80x25  8x14    640x350   4       2    A000 64k EGA
  88.      = G                  640x350  16            A000 256k EGA,VGA
  89.  11h = G   80x30  8x16    640x480 mono           A000 VGA,MCGA,ATI EGA,ATI 
  90. VIP
  91.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  92.      = G   80x30  8x16    640x480 16/64          A000 ATI EGA Wonder
  93.  13h = G   40x25  8x8     320x200 256/256k       A000 VGA,MCGA,ATI VIP
  94. ----------1001-------------------------------
  95. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  96.         AH = 01h
  97.         CH = bit 7    should be zero
  98.              bits 6,5 cursor blink
  99.                 (00=normal, 01=invisible, 10=erratic, 11=slow)
  100.                 (00=normal, other=invisible on EGA/VGA)
  101.              bits 4-0 top scan line containing cursor
  102.         CL = bottom scan line containing cursor (bits 0-4)
  103. Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, 
  104. but
  105.        returns unmapped cursor shape
  106.        applications which wish to change the cursor by programming the
  107.        hardware directly on EGA or above should call INT 10/AX=1130h or
  108.        read 0040h:0085h first to determine the current font height
  109. BUG:   AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  110.        is not equal to the current video mode
  111. SeeAlso: AH=03h,AX=CD05h
  112. ----------1002-------------------------------
  113. INT 10 - VIDEO - SET CURSOR POSITION
  114.         AH = 02h
  115.         BH = page number
  116.               0-3 in modes 2&3
  117.               0-7 in modes 0&1
  118.                 0 in graphics modes
  119.         DH = row (00h is top)
  120.         DL = column (00h is left)
  121. SeeAlso: AH=03h,AH=05h
  122. ----------1003-------------------------------
  123. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  124.         AH = 03h
  125.         BH = page number
  126.               0-3 in modes 2&3
  127.               0-7 in modes 0&1
  128.                 0 in graphics modes
  129. Return: AX = 0000h (Phoenix BIOS)
  130.         CH = start scan line
  131.         CL = end scan line
  132.         DH = row (00h is top)
  133.         DL = column (00h is left)
  134. Notes: a separate cursor is maintained for each of up to 8 display pages
  135.        many ROM BIOSes incorrectly return the default size for a color 
  136. display
  137.        (start 06h, end 07h) when a monochrome display is attached
  138. SeeAlso: AH=01h,AH=02h
  139. ----------1004-------------------------------
  140. INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)
  141.         AH = 04h
  142. Return: AH = light pen trigger flag
  143.              00h not down/triggered
  144.              01h down/triggered 
  145.         DH,DL = row,column of character light pen is on 
  146.         CH = pixel row (graphics modes 04h-06h)
  147.         CX = pixel row (graphics modes with >200 rows)
  148.         BX = pixel column
  149. Notes: on a CGA, returned column numbers are always multiples of 2 (320-
  150.        column modes) or 4 (640-column modes)
  151.        returned row numbers are only accurate to two lines
  152. ----------1005-------------------------------
  153. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  154.         AH = 05h
  155.         AL = new page number (00h to number of pages - 1) (see AH=00h)
  156. SeeAlso: AH=0Fh
  157. ----------1006-------------------------------
  158. INT 10 - VIDEO - SCROLL UP WINDOW
  159.         AH = 06h
  160.         AL = number of lines by which to scroll up (00h = clear entire 
  161. window)
  162.         BH = attribute used to write blank lines at bottom of window
  163.      CH,CL = row,column of window's upper left corner
  164.      DH,DL = row,column of window's lower right corner
  165. Note:  affects only the currently active page (see AH=05h)
  166. Warning: some implementations have a bug which destroys BP
  167. SeeAlso: AH=07h,AH=72h,AH=73h
  168. ----------1007-------------------------------
  169. INT 10 - VIDEO - SCROLL DOWN WINDOW
  170.         AH = 07h
  171.         AL = number of lines by which to scroll down (00h=clear entire 
  172. window)
  173.         BH = attribute used to write blank lines at top of window
  174.      CH,CL = row,column of window's upper left corner
  175.      DH,DL = row,column of window's lower right corner
  176. Note:  affects only the currently active page (see AH=05h)
  177. Warning: some implementations have a bug which destroys BP
  178. SeeAlso: AH=06h,AH=72h,AH=73h
  179. ----------1008-------------------------------
  180. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  181.         AH = 08h
  182.         BH = page number (00h to number of pages - 1) (see AH=00h)
  183. Return: AH = attribute
  184.              bit    7: blink
  185.              bits 6-4: background color
  186.                        000 black
  187.                        001 blue
  188.                        010 green
  189.                        011 cyan
  190.                        100 red
  191.                        101 magenta
  192.                        110 brown
  193.                        111 white
  194.              bits 3-0: foreground color
  195.                        0000 black       1000 dark gray
  196.                        0001 blue        1001 light blue
  197.                        0010 green       1010 light green
  198.                        0011 cyan        1011 light cyan
  199.                        0100 red         1100 light red
  200.                        0101 magenta     1101 light magenta
  201.                        0110 brown       1110 yellow
  202.                        0111 light gray  1111 white
  203.         AL = character
  204. Notes: for monochrome displays, a foreground of 1 with background 0 is 
  205. underlined
  206.        the blink bit may be reprogrammed to enable intense background 
  207. colors
  208.        using AX=1003h or by programming the CRT controller
  209. SeeAlso: AH=09h,AX=1003h
  210. ----------1009-------------------------------
  211. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  212.         AH = 09h
  213.         AL = character to display
  214.         BH = page number (00h to number of pages - 1) (see AH=00h)
  215.         BL = attribute (text mode) or color (graphics mode)
  216.              if bit 7 set in graphics mode, character is xor'ed onto 
  217. screen
  218.         CX = number of times to write character
  219. Notes: all characters are displayed, including CR, LF, and BS
  220.        replication count in CX may produce an unpredictable result in 
  221. graphics
  222.        modes if it is greater than the number of positions remaining in 
  223. the
  224.        current row
  225. SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  226. ----------100A-------------------------------
  227. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  228.         AH = 0Ah
  229.         AL = character to display
  230.         BH = page number (00h to number of pages - 1) (see AH=00h)
  231.         BL = attribute (PCjr only) or color (graphics mode)
  232.              if bit 7 set in graphics mode, character is xor'ed onto 
  233. screen
  234.         CX = number of times to write character
  235. Notes: all characters are displayed, including CR, LF, and BS
  236.        replication count in CX may produce an unpredictable result in 
  237. graphics
  238.        modes if it is greater than the number of positions remaining in 
  239. the
  240.        current row
  241. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  242. ----------100B--BH00-------------------------
  243. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  244.         AH = 0Bh
  245.         BH = 00h
  246.         BL = background/border color (border only in text modes)
  247. SeeAlso: AH=0Bh/BH=01h
  248. ----------100B--BH01-------------------------
  249. INT 10 - VIDEO - SET PALETTE
  250.         AH = 0BH
  251.         BH = 01h
  252.         BL = palette ID
  253.              00h background, green, red, and brown/yellow
  254.              01h background, cyan, magenta, and white
  255. SeeAlso: AH=0Bh/BH=00h
  256. ----------100C-------------------------------
  257. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  258.         AH = 0Ch
  259.         BH = page number
  260.         AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  261.         CX = column
  262.         DX = row
  263. Notes: valid only in graphics modes
  264.        BH is ignored if the current video mode supports only one page
  265. SeeAlso: AH=0Dh,AH=46h
  266. ----------100D-------------------------------
  267. INT 10 - VIDEO - READ GRAPHICS PIXEL
  268.         AH = 0Dh
  269.         BH = page number
  270.         CX = column
  271.         DX = row
  272. Return: AL = pixel color
  273. Notes: valid only in graphics modes
  274.        BH is ignored if the current video mode supports only one page
  275. SeeAlso: AH=0Ch,AH=47h
  276. ----------100E-------------------------------
  277. INT 10 - VIDEO - TELETYPE OUTPUT
  278.         AH = 0Eh
  279.         AL = character to write
  280.         BH = page number
  281.         BL = foreground color (graphics modes only)
  282. Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are 
  283. interpreted
  284.        and do the expected things
  285.        IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same 
  286. as
  287.        the current active page
  288. SeeAlso: AH=02h,AH=0Ah
  289. ----------100F-------------------------------
  290. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  291.         AH = 0Fh
  292. Return: AH = number of character columns
  293.         AL = display mode (see AH=00h)
  294.         BH = active page (see AH=05h)
  295. Notes: if mode was set with bit 7 set ("no blanking"), the returned mode 
  296. will
  297.        also have bit 7 set
  298.        EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  299.        (monochrome) in all extended-row text modes
  300. SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
  301. ----------101000----------------------------
  302. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  303.         AX = 1000h
  304.         BL = palette register number (00h-0Fh)
  305.            = attribute register number (undocumented)
  306.              10h attribute mode control register (should let BIOS control 
  307. this)
  308.              11h overscan color register (see also AX=1001h)
  309.              12h color plane enable register (bits 3-0 enable 
  310. corresponding
  311.                  text attribute bit)
  312.              13h horizontal PEL panning register
  313.              14h color select register
  314.         BH = color or attribute register value
  315. Notes: on MCGA, only BX = 0712h is supported
  316.        under UltraVision, the palette locking status (see AX=CD01h)
  317.        determines the outcome
  318. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  319. ----------101001-----------------------------
  320. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  321.         AX = 1001h
  322.         BH = border color (00h-3Fh)
  323. BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
  324.      and places the border color at offset 11h of the palette table
  325.      rather than offset 10h
  326. Note: under UltraVision, the palette locking status (see AX=CD01h)
  327.       determines the outcome
  328. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  329. ----------101002-----------------------------
  330. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  331.         AX = 1002h
  332.         ES:DX -> palette register list
  333. Note: under UltraVision, the palette locking status (see AX=CD01h)
  334.       determines the outcome
  335. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  336.  
  337. Format of palette register list:
  338. Offset  Size     Description
  339.  00h   16 BYTEs  colors for palette registers 00h through 0Fh
  340.  10h      BYTE   border color
  341. ----------101003-----------------------------
  342. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, 
  343. VGA)
  344.         AX = 1003h
  345.         BL = new state
  346.              00h background intensity enabled
  347.              01h blink enabled
  348. Note: although there is no function to get the current status, bit 5 of
  349.       0040h:0065h indicates the state
  350. SeeAlso: AH=08h
  351. ----------101007-----------------------------
  352. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  353.         AX = 1007h
  354.         BL = palette or attribute (undoc) register number (see AX=1000h)
  355. Return: BH = palette or attribute register value
  356. Notes: UltraVision v2+ supports this function even on color EGA systems in
  357.        video modes 00h-03h, 10h, and 12h; direct programming of the 
  358. palette
  359.        registers will cause incorrect results because the EGA registers 
  360. are
  361.        write-only.  To guard against older versions or unsupported video
  362.        modes, programs which expect to use this function on EGA systems
  363.        should set BH to FFh on entry.
  364. SeeAlso: AX=1000h,AX=1009h
  365. ----------101008-----------------------------
  366. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision 
  367. v2+)
  368.         AX = 1008h
  369. Return: BH = border color (00h-3Fh)
  370. Notes: UltraVision v2+ supports this function even on color EGA systems in
  371.        video modes 00h-03h, 10h, and 12h; direct programming of the 
  372. palette
  373.        registers will cause incorrect results because the EGA registers 
  374. are
  375.        write-only.  To guard against older versions or unsupported video
  376.        modes, programs which expect to use this function on EGA systems
  377.        should set BH to FFh on entry.
  378. SeeAlso: AX=1001h
  379. ----------101009-----------------------------
  380. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  381.         AX = 1009h
  382.         ES:DX -> 17-byte buffer (see AX=1002h)
  383. Notes: UltraVision v2+ supports this function even on color EGA systems in
  384.        video modes 00h-03h, 10h, and 12h; direct programming of the 
  385. palette
  386.        registers will cause incorrect results because the EGA registers 
  387. are
  388.        write-only.  To guard against older versions or unsupported video
  389.        modes, programs which expect to use this function on EGA systems
  390.        should set the ES:DX buffer to FFh before calling.
  391. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  392. ----------101010-----------------------------
  393. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  394.         AX = 1010h
  395.         BX = register number
  396.         CH = new value for green (0-63)
  397.         CL = new value for blue (0-63)
  398.         DH = new value for red (0-63)
  399. SeeAlso: AX=1012h,AX=1015h
  400. ----------101012-----------------------------
  401. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  402.         AX = 1012h
  403.         BX = starting color register
  404.         CX = number of registers to set
  405.         ES:DX -> table of 3*CX bytes where each 3 byte group represents 
  406. one
  407.                  byte each of red, green and blue (0-63)
  408. SeeAlso: AX=1010h,AX=1017h
  409. ----------101013-----------------------------
  410. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  411.         AX = 1013h
  412.         BL = subfunction
  413.              00h select paging mode
  414.                  BH = 00h select 4 blocks of 64
  415.                  BH = 01h select 16 blocks of 16
  416.              01h select page
  417.                  BH = page number (00h to 03h) or (00h to 0Fh)
  418. Note: not valid in mode 13h
  419. SeeAlso: AX=101Ah
  420. ----------101015-----------------------------
  421. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  422.         AX = 1015h
  423.         BL = palette register number
  424. Return: DH = red value
  425.         CH = green value
  426.         CL = blue value
  427. SeeAlso: AX=1010h,AX=1017h
  428. ----------101017-----------------------------
  429. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  430.         AX = 1017h
  431.         BX = starting palette register
  432.         CX = number of palette registers to read
  433.         ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  434. Return: buffer filled with CX red, green and blue triples
  435. SeeAlso: AX=1012h,AX=1015h
  436. ----------101018-----------------------------
  437. INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
  438.         AX = 1018h
  439.         BL = new PEL value
  440. SeeAlso: AX=1019h
  441. ----------101019-----------------------------
  442. INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
  443.         AX = 1019h
  444. Return: BL = value read
  445. SeeAlso: AX=1018h
  446. ----------10101A-----------------------------
  447. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  448.         AX = 101Ah
  449. Return: BL = paging mode
  450.              00h four pages of 64
  451.              01h sixteen pages of 16
  452.         BH = current page
  453. SeeAlso: AX=1013h
  454. ----------10101B-----------------------------
  455. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  456.         AX = 101Bh
  457.         BX = starting palette register
  458.         CX = number of registers to convert
  459. SeeAlso: AH=12h/BL=33h
  460. ----------1011-------------------------------
  461. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  462.         AH = 11h
  463. The following functions will cause a mode set, completely resetting
  464. the video environment, but without clearing the video buffer
  465.         AL = 00h, 10h: load user-specified patterns
  466.              ES:BP -> user table
  467.              CX  = count of patterns to store
  468.              DX  = character offset into map 2 block
  469.              BL  = block to load in map 2
  470.              BH  = number of bytes per character pattern
  471.         AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  472.              BL  = block to load
  473.         AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  474.              BL  = block to load
  475.         AL = 03h: set block specifier
  476.              BL  = block specifier
  477.                (EGA/MCGA) bits 0,1 = block selected by chars with 
  478. attribute bit 3=0
  479.                           bits 2,3 = block selected by chars with 
  480. attribute bit 3=1
  481.                     (VGA) bits 0,1,4 = block selected by attribute bit 3 = 
  482. 0
  483.                           bits 2,3,5 = block selected by attribute bit 3 = 
  484. 1
  485.         AL = 04h, 14h: load ROM 8x16 character set (VGA)
  486.              BL  = block to load
  487. The routines called with AL=1xh are designed to be called only
  488. immediately after a mode set and are similar to the routines called
  489. with AL=0xh, except that:
  490.       Page 0 must be active.
  491.       Bytes/character is recalculated.
  492.       Max character rows is recalculated.
  493.       CRT buffer length is recalculated.
  494.       CRTC registers are reprogrammed as follows:
  495.            R09 = bytes/char-1 ; max scan line (mode 7 only)
  496.            R0A = bytes/char-2 ; cursor start
  497.            R0B = 0            ; cursor end
  498.            R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  499.            R14 = bytes/char     ; underline loc
  500.                   (*** BUG: should be 1 less ***)
  501. SeeAlso: AX=CD10h
  502. ----------1011-------------------------------
  503. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, 
  504. VGA)
  505.         AH = 11h
  506.         AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  507.                   ES:BP -> user table
  508.         AL = 21h: set user graphics characters
  509.                   ES:BP -> user table
  510.                   CX      = bytes per character
  511.                   BL      = row specifier
  512.                         00h user set
  513.                             DL = number of rows
  514.                         01h 14 rows
  515.                         02h 25 rows
  516.                         03h 43 rows
  517.         AL = 22h: ROM 8 by 14 set
  518.                   BL = row specifier (see above)
  519.         AL = 23h: ROM 8 by 8 double dot
  520.                   BL = row specifier (see above)
  521.         AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  522.                   BL = row specifier (see above)
  523.         AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  524.                   BL = row specifier (see above)
  525. Notes: these functions are meant to be called only after a mode set
  526.        UltraVision v2+ sets INT 43 to the appropriate font for 
  527. AL=22h,23h,24h,
  528.        and 29h
  529. SeeAlso: INT 1F, INT 43
  530. ----------101130-----------------------------
  531. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  532.         AX = 1130h
  533.         BH = pointer specifier
  534.              00h INT 1Fh pointer
  535.              01h INT 43h pointer
  536.              02h ROM 8x14 character font pointer
  537.              03h ROM 8x8 double dot font pointer
  538.              04h ROM 8x8 double dot font (high 128 characters)
  539.              05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  540.              06h ROM 8x16 font (MCGA, VGA)
  541.              07h ROM alternate 9x16 font (VGA only)
  542.              11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync 
  543. EGA)
  544.              12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync 
  545. EGA)
  546. Return: ES:BP = specified pointer
  547.         CX    = bytes/character
  548.         DL    = character rows on screen - 1
  549. Note: for UltraVision v2+, the 9xN alternate fonts follow the 
  550. corresponding
  551.       8xN font at ES:BP+256N
  552. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  553. ----------1012--BL10-------------------------
  554. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA 
  555. INFO
  556.         AH = 12h
  557.         BL = 10h
  558. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  559.              01h mono mode in effect (I/O port 3Bxh)
  560.         BL = 00h  64k bytes memory installed
  561.              01h 128k bytes memory installed
  562.              02h 192k bytes memory installed
  563.              03h 256k bytes memory installed
  564.         CH = feature bits
  565.         CL = switch settings
  566. ----------1012--BL20-------------------------
  567. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE 
  568. PRTSC
  569.         AH = 12h
  570.         BL = 20h  select alternate print screen routine
  571. Notes: installs a PrtSc routine from the video card's BIOS to replace the
  572.        default PrtSc handler from the ROM BIOS, which usually does not
  573.        understand screen heights other than 25 lines
  574.        some adapters disable print-screen instead of enhancing it
  575. SeeAlso: INT 05
  576. ----------1012--BL30-------------------------
  577. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL 
  578. RESOLUTION
  579.         AH = 12h
  580.         BL = 30h
  581.         AL = vertical resolution
  582.              00h 200 scan lines
  583.              01h 350 scan lines
  584.              02h 400 scan lines
  585. Return: AL = 12h if function supported
  586. ----------1012--BL31-------------------------
  587. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  588.         AH = 12h
  589.         BL = 31h
  590.         AL = 00h enable default palette loading
  591.              01h disable default palette loading
  592. Return: AL = 12h if function supported
  593. ----------1012--BL32-------------------------
  594. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  595.         AH = 12h
  596.         BL = 32h
  597.         AL = 00h enable video addressing
  598.              01h disable video addressing
  599. Return: AL = 12h if function supported
  600. ----------1012--BL33-------------------------
  601. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE 
  602. SUMMING
  603.         AH = 12h
  604.         BL = 33h
  605.         AL = 00h enable gray scale summing
  606.              01h disable gray scale summing
  607. Return: AL = 12h if function supported
  608. SeeAlso: AX=101Bh,AX=BF06h
  609. ----------1012--BL34-------------------------
  610. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  611.         AH = 12h
  612.         BL = 34h
  613.         AL = 00h enable alphanumeric cursor emulation
  614.              01h disable alphanumeric cursor emulation
  615. Return: AL = 12h if function supported
  616. ----------1012--BL35-------------------------
  617. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  618.         AH = 12h
  619.         BL = 35h
  620.         AL = 00h initial adapter video off
  621.              01h initial planar video on
  622.              02h switch active video off
  623.              03h switch inactive video on
  624.              80h *UNDOCUMENTED* set system board video active flag
  625.         ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  626. Return: AL = 12h if function supported
  627. ----------1012--BL36-------------------------
  628. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH 
  629. CONTROL
  630.         AH = 12h
  631.         BL = 36h
  632.         AL = 00h enable refresh
  633.              01h disable refresh
  634. Return: AL = 12h if function supported
  635. ----------1013-------------------------------
  636. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  637.         AH = 13h
  638.         AL = write mode
  639.              bit 0: update cursor after writing
  640.                  1: string contains alternating characters and attributes
  641.         BH = page number
  642.         BL = attribute if string contains only characters
  643.         CX = number of characters in string
  644.         DH,DL = row,column at which to start writing
  645.         ES:BP -> string to write
  646. Notes: recognizes CR, LF, BS, and bell
  647.        also available PC or XT with EGA or higher
  648.        HP 95LX only supports write mode 00h
  649. BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
  650.      the active page rather than the requested page
  651. SeeAlso: AH=09h,AH=0Ah
  652. ----------101A-------------------------------
  653. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  654.         AH = 1Ah
  655.         AL = 00h read display combination code
  656. Return:          BL = active display code (see below)
  657.                  BH = alternate display code
  658.              01h set display combination code
  659.                  BL = active display code (see below)
  660.                  BH = alternate display code
  661. Return: AL = 1Ah if function was supported
  662.  
  663. Values for display combination code:
  664.   00h no display
  665.   01h monochrome adapter w/ monochrome display
  666.   02h CGA w/ color display
  667.   03h reserved
  668.   04h EGA w/ color display
  669.   05h EGA w/ monochrome display
  670.   06h PGA w/ color display
  671.   07h VGA w/ monochrome analog display
  672.   08h VGA w/ color analog display
  673.   09h reserved
  674.   0Ah MCGA w/ digital color display
  675.   0Bh MCGA w/ monochrome analog display
  676.   0Ch MCGA w/ color analog display
  677.   FFh unknown display type
  678. ----------101B-------------------------------
  679. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  680.         AH = 1Bh
  681.         BX = implementation type
  682.              0000h return functionality/state information
  683.         ES:DI -> 64 byte buffer for state information (see below)
  684. Return: AL = 1Bh if function supported
  685.         ES:DI buffer filled with state information
  686. SeeAlso: AH=15h
  687.  
  688. Format of state information:
  689. Offset Size   Description
  690.  00h   DWORD  address of static functionality table (see below)
  691.  04h   BYTE   video mode in effect
  692.  05h   WORD   number of columns
  693.  07h   WORD   length of regen buffer in bytes
  694.  09h   WORD   starting address of regen buffer
  695.  0Bh   WORD   cursor position for page 0
  696.  
  697.  
  698. The limitations of this program is stopping me from including the rest of 
  699. this information. 2 more pages left. But the part about the fonts are up 
  700. there.
  701. Have fun.
  702.  
  703.